//package com.my.okhttps.test;
//
//import cn.hutool.core.util.ArrayUtil;
//import com.alibaba.fastjson.JSON;
//import com.ejlchina.okhttps.HttpResult;
//import com.ejlchina.okhttps.OkHttps;
//import com.github.benmanes.caffeine.cache.Cache;
//import com.my.okhttps.OkHttpsConfig;
//import lombok.extern.slf4j.Slf4j;
//import org.apache.commons.lang.StringUtils;
//import org.jeecg.core.common.api.vo.Result;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Component;
//
//import java.io.IOException;
//import java.net.SocketTimeoutException;
//import java.util.List;
//
///**
// * 网格暴露的业务
// * @author timo 2020/11/26
// */
//@Component
//@Slf4j
//public class WanggeService {
//    public static final String wangge = "wangge";
//
//    /**根据经纬度查询网格网格员*/
//    public static final String GRID_GET_GRIDER_BY_LAT = "/open-api/grid_user/longitude-latitude";
//    /**输入网格id，返回所有网格员*/
//    public static final String GRID_GET_GRIDERS_BY_ID = "/open-api/grid_user/gridId/%s";
//    /**根据经纬度查询网格*/
//    public static final String GRID_GET_BY_LAT =  "/open-api/grid/longitude-latitude";
//    /**输入网格id，返回网格*/
//    public static final String GRID_GET_BY_ID = "/open-api/grid/%s";
//
//    /**根据网格员id查找网格员*/
//    public static final String GRID_GET_GRIDER_BY_GRIDERID = "/open-api/grid_user/grid_userId/%s";
//
//    /**根据网格员ids查找网格员*/
//    public static final String GRID_GET_GRIDER_BY_GRIDERIDS = "/open-api/grid_user/map/id_sysuser";
//    /**输入网格ids，返回网格*/
//    public static final String GRID_GET_BY_IDS = "/open-api/grid/map/id_grid";
//    /**
//     * 根据网格id集合，查询网格-网格员列表的map集合列表
//     */
//    public static final String GRID_GET_GRIDERS_BY_GRID_IDS = "/open-api/grid_user/map/list/grid_ids";
//    /**
//     * 根据网格id集合，查询网格-网格员列表的map集合列表
//     */
//    public Result getGridGriderByGridIds(List<String> idList) throws Exception {
//        if(idList==null || idList.size() == 0){
//            return null;
//        }
//        String url = GRID_GET_GRIDERS_BY_GRID_IDS;
//        HttpResult result = OkHttps.sync(url)
//                .addUrlPara("gridIdList", ArrayUtil.join(idList.toArray(),","))
//                .tag(wangge)
//                .nothrow().get();
//        return resultConversion(result,url);
//    }
//
//    /**
//     * 根据网格员id查找网格员
//     * @return
//     */
//    public Result getGridSingleGriderByGriderId(String griderId) throws Exception {
//        if(StringUtils.isBlank(griderId)){
//            return null;
//        }
//        String url = String.format(org.jeecg.core.common.http.WanggeService.GRID_GET_GRIDER_BY_GRIDERID,griderId);
//        HttpResult result = OkHttps.sync(url).tag(wangge).nothrow().get();
//        return resultConversion(result,url);
//    }
//
//    /**
//     * 根据网格员ids查找网格员
//     * @param idList
//     * @return
//     */
//    public Result getGridSingleGriderByGriderIds(List<String> idList) throws Exception {
//        if(idList==null || idList.size() == 0){
//            return null;
//        }
//        String url = String.format(GRID_GET_GRIDER_BY_GRIDERIDS);
//        HttpResult result = OkHttps.sync(url)
//                .addUrlPara("idList", ArrayUtil.join(idList.toArray(),","))
//                .tag(wangge)
//                .nothrow().get();
//        return resultConversion(result,url);
//    }
//    /**
//     * 根据网格id查询网格
//     * @return
//     */
//    public Result getGridInfoById(String gridId) throws Exception {
//        if(StringUtils.isBlank(gridId)){
//            return null;
//        }
//        String url = String.format(org.jeecg.core.common.http.WanggeService.GRID_GET_BY_ID,gridId);
//        HttpResult result = OkHttps.sync(url).tag(wangge).nothrow().get();
//        return resultConversion(result,url);
//    }
//    /**
//     * 根据网格ids查询网格
//     * @return
//     */
//    public Result getGridInfoByIds(List<String> idList) throws Exception {
//        if(idList==null || idList.size() == 0){
//            return null;
//        }
//        String url = String.format(GRID_GET_BY_IDS);
//        HttpResult result = OkHttps.sync(url)
//                .addUrlPara("idList", ArrayUtil.join(idList.toArray(),","))
//                .tag(wangge)
//                .nothrow()
//                .get();
//        return resultConversion(result,url);
//    }
//
//
//    /**
//     * 输入网格id，返回所有网格员
//     * @param gridId
//     * @return
//     */
//    public Result getGridGriderById(String gridId) throws Exception {
//        if(StringUtils.isBlank(gridId)){
//            return null;
//        }
//        String url = String.format(org.jeecg.core.common.http.WanggeService.GRID_GET_GRIDERS_BY_ID,gridId);
//        HttpResult result = OkHttps.sync(url).tag(wangge).nothrow().get();
//        return resultConversion(result,url);
//    }
//
//    /**
//     * 根据经纬度查询网格
//     * @param latitude
//     * @param longitude
//     * @return
//     */
//    public Result getGridGetByLat(String latitude,String longitude) throws Exception {
//        if(StringUtils.isBlank(latitude) || StringUtils.isBlank(longitude)){
//            return null;
//        }
//        String url = GRID_GET_BY_LAT;
//        HttpResult result = OkHttps.sync(url)
//                .addUrlPara("latitude",latitude)
//                .addUrlPara("longitude",longitude)
//                .tag(wangge)
//                .nothrow()
//                .get();
//        return resultConversion(result,url);
//    }
//    /**
//     * 根据经纬度查询网格员
//     * @param latitude
//     * @param longitude
//     * @return
//     */
//    public Result getGridGetGriderByLat(String latitude,String longitude) throws Exception {
//        if(StringUtils.isBlank(latitude) || StringUtils.isBlank(longitude)){
//            return null;
//        }
//        String url = GRID_GET_GRIDER_BY_LAT;
//        HttpResult result = OkHttps.sync(url)
//                .addUrlPara("latitude",latitude)
//                .addUrlPara("longitude",longitude)
//                .tag(wangge)
//                .nothrow()
//                .get();
//        return resultConversion(result,url);
//    }
//
//
//    @Autowired
//    private OkHttpsConfig okHttpsConfig;
//    public void resultState(HttpResult result, String url) throws Exception {
//        Cache<String, Object> fusingCache = okHttpsConfig.getFusingCache();
//        boolean http = url.startsWith("http");
//        if(!http){
//            url = OkHttpsConfig.GRID_BASE_URL+url;
//        }
//        // 还可以获得具体的异常信息
//        IOException error = result.getError();
//        // 判断执行状态
//        switch (result.getState()) {
//            case TIMEOUT:
//                // 请求超时
//                fusingCache.put(url, 1);
//                log.info("请求超时！进行熔断处理");
//                throw new SocketTimeoutException();
//            case RESPONSED:
//                log.info("okhttps请求已正常响应");
//                break;
//            case CANCELED:
//                log.info("okhttps请求已被取消");
//                break;
//            case NETWORK_ERROR:
//                log.info("okhttps网络错误，说明用户没网了");
//                break;
//            case EXCEPTION:
//                log.info("okhttps其它异常");
//                break;
//            default:
//                log.info("okhttps default");
////                log.error(error!=null?error.getMessage():"okhttps熔断");
////                throw new Exception(error!=null?error.getMessage():"okhttps熔断");
//        }
//    }
//    public Result resultConversion(HttpResult result, String url) throws Exception {
//        resultState(result,url);
//        HttpResult.Body body = result.getBody();
//        if(body==null){
//            //请求被取消 熔断
//            return Result.fail("请求被取消-熔断(接口连接超时),3分钟之后重试");
//        }
//        String bodyStr = body.toString();
//        try {
//            return JSON.parseObject(bodyStr, Result.class);
//        }catch (com.alibaba.fastjson.JSONException e){
//            log.error("okhttp响应值转化异常:"+bodyStr);
//            return Result.fail("okhttp响应值转化异常:"+bodyStr);
//        }
//    }
//
//}
